console.log('deepclone');
let  result = {
    age: 20,
    name:'xxx',
    address: {
        city: 'fuzhou'
    },
    arr: ['a', 'b', 'c']
}
const obj1 = {
    age: 20,
    name:'xxx',
    address: {
        city: 'fuzhou'
    },
    arr: ['a', 'b', 'c']
}
console.log('obj1.address.city', obj1.address.city);
const obj2 = deepClone(obj1)
obj2.arr[0] = 'a1'
obj2.address.city = 'hangzhou'
console.log('obj1.address.city', obj1.address.city);
console.log(obj1.arr[0], obj2.arr[0]);
/**
 *  深拷贝 {Object} obj 要拷贝的对象
 *  @param
 */
function deepClone( obj = {} ) {
    if (typeof obj !== 'object' || obj == null) {
    // obj 是 null, 或者不是对象和数组，直接返回
    return obj
 }
 // 初始化返回结果
 let result
 if (obj instanceof Array) {
     result = []
 } else {
     result = {}
 }
 for (let key in obj) {
    // 保证key不是原型的属性
    if (obj.hasOwnProperty(key)) {
        // 递归调用
        result[key] = deepClone(obj[key])
    }
 }
 // 返回结果
 return result
}
